Sdílet prostřednictvím


System.Collections.Generic.HashSet<T> – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Třída HashSet<T> poskytuje vysoce výkonné operace sady. Sada je kolekce, která neobsahuje žádné duplicitní prvky a jejichž prvky nejsou v žádném konkrétním pořadí.

Kapacita objektu HashSet<T> je počet prvků, které může objekt obsahovat. HashSet<T> Kapacita objektu se automaticky zvyšuje při přidání prvků do objektu.

Třída HashSet<T> je založená na modelu matematických sad a poskytuje operace s vysokou úrovní výkonu podobné přístupu ke klíčům Dictionary<TKey,TValue> v kolekcích nebo Hashtable kolekcích. Jednoduše řečeno, HashSet<T> třída může být považována Dictionary<TKey,TValue> za kolekci bez hodnot.

HashSet<T> Kolekce není seřazená a nemůže obsahovat duplicitní prvky. Pokud je duplikace pořadí nebo elementu pro vaši aplikaci důležitější než výkon, zvažte použití List<T> třídy společně s metodou Sort .

HashSet<T> poskytuje mnoho matematických operací sady, jako je sčítání sady (sjednocení) a odčítání sady. Následující tabulka uvádí zadané HashSet<T> operace a jejich matematické ekvivalenty.

Operace HashSet Matematický ekvivalent
UnionWith Sjednocení nebo nastavení sčítání
IntersectWith Průsečíku
ExceptWith Nastavení odčítání
SymmetricExceptWith Symetrický rozdíl

Kromě uvedených operací HashSet<T> sady třída také poskytuje metody pro určení rovnosti sady, překrytí sad a zda je sada podmnožinou nebo nadmnožinou jiné sady.

Pouze rozhraní .NET Framework: Pro velmi velké HashSet<T> objekty můžete zvýšit maximální kapacitu na 2 miliardy prvků v 64bitovém systému nastavením enabled atributu <gcAllowVeryLargeObjects> elementu konfigurace do true prostředí za běhu.

Třída HashSet<T> implementuje rozhraní ISet<T>.

Operace hashset a sady LINQ

LINQ poskytuje přístup k , Distinct, UnionIntersecta Except nastavit operace pro jakýkoli zdroj dat, který implementuje IEnumerable nebo IQueryable rozhraní. HashSet<T> poskytuje větší a robustnější kolekci operací sady. Například poskytuje porovnání, HashSet<T> například IsSubsetOf a IsSupersetOf.

Hlavním rozdílem mezi operacemi a operacemi HashSet<T> sady LINQ je, že operace sady LINQ vždy vrací novou IEnumerable<T> kolekci, zatímco HashSet<T> ekvivalentní metody upravují aktuální kolekci.

Pokud obvykle musíte vytvořit novou sadu nebo pokud vaše aplikace potřebuje přístup pouze k zadaným operacím sady, bude stačit použití operací sady LINQ pro libovolnou IEnumerable<T> kolekci nebo pole. Pokud však vaše aplikace vyžaduje přístup k dalším operacím sady nebo pokud není žádoucí nebo nutné vytvořit novou kolekci, použijte HashSet<T> třídu.

Následující tabulka ukazuje HashSet<T> operace a jejich ekvivalentní operace sady LINQ.

Operace HashSet Ekvivalent LINQ
UnionWith Union
IntersectWith Intersect
ExceptWith Except
Není k dispozici. Distinct
SymmetricExceptWith Není k dispozici.
Overlaps Není k dispozici.
IsSubsetOf Není k dispozici.
IsProperSubsetOf Není k dispozici.
IsSupersetOf Není k dispozici.
IsProperSupersetOf Není k dispozici.
SetEquals Není k dispozici.